package com.moli.iov.alarm.remote;

import com.moli.iov.alarm.model.dto.req.AlarmHandlingDto;
import com.moli.iov.alarm.model.dto.req.AlarmInfoHandlerRecordReqDto;
import com.moli.iov.alarm.model.dto.req.AlarmInfoReqDto;
import com.moli.iov.alarm.model.dto.req.AlarmMeAuditReqDto;
import com.moli.iov.alarm.model.dto.res.AlarmDetailDto;
import com.moli.iov.alarm.model.dto.res.AlarmInfoResDto;
import com.moli.iov.alarm.model.po.AlarmInfo;
import com.moli.iov.model.dto.req.PageExtend;
import com.moli.iov.rest.RestResponse;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 报警业务
 * </p>
 *
 * @author zql
 * @since 2019/9/3 12:08
 */
public interface IAlarmRemoteService {

    /**
     * 分页查询报警列表
     *
     * @param alarmInfoReqDto
     * @return
     */
    PageExtend<AlarmInfoResDto> listPageAlarmInfo(AlarmInfoReqDto alarmInfoReqDto);

    /**
     * 报警详情
     *
     * @param alarmInfoReqDto
     * @return
     */
    RestResponse<AlarmInfoResDto> getAlarmInfo(AlarmInfoReqDto alarmInfoReqDto);

    /**
     * 忽略报警
     *
     * @param alarmInfoReqDto
     * @return
     */
    RestResponse ignore(AlarmInfoReqDto alarmInfoReqDto);

    /**
     * 里程异变列表
     *
     * @param vins
     * @return
     */
    RestResponse<List<AlarmInfo>> listMileageExceptionChange(List<String> vins);

    /**
     * 里程异变处理 审核
     *
     * @param alarmMeAuditReqDto
     */
    RestResponse meAudit(AlarmMeAuditReqDto alarmMeAuditReqDto);

    /**
     * 获取vin 正在报警的数量
     *
     * @param alarmInfoReqDto
     * @return
     */
    RestResponse<Map<String, Integer>> getTotalAlarmingByVins(AlarmInfoReqDto alarmInfoReqDto);

    /**
     * 车辆是否报警
     *
     * @param alarmInfoReqDto
     * @return
     */
    RestResponse<AlarmDetailDto> getAlarmDetailByVin(AlarmInfoReqDto alarmInfoReqDto);

    /**
     * 处理报警
     *
     * @param dto
     * @return
     */
    RestResponse alarmHandling(AlarmHandlingDto dto);

  /**
   * 得到报警处理记录
   * @param dto
   * @return
   */
    RestResponse getAlarmInfoHandlerRecordList(AlarmInfoHandlerRecordReqDto dto);
}
